package constant

// 技巧类 - 数据结构 - 算法 - 综合类 - 数学类 - 复杂边界类
const (
	// 技巧类
	TwoPoint  = "TwoPoint"  // 双指针
	Bisection = "Bisection" // 二分法

	PreSum    = "PreSum"    // 前缀和
	DiffArray = "DiffArray" // 差分数组
	GapMulti  = "GapMulti"  // 间隔乘

	Xor        = "Xor"        // 异或
	Bit        = "Bit"        // 位运算
	UnionFind  = "UnionFind"  // 并查集
	PigeonCage = "PigeonCage" // 鸽笼原理

	Cache = "Cache"

	// 综合类 - 可以使用到多种方式解决
	SlidingWindow = "SlidingWindow"
	ReturnKMin    = "ReturnKMin"

	// 数学类
	Matrix    = "Matrix"
	Graphical = "Graphical" // 图形计算

	// 复杂边界类
	Calculator   = "Calculator"
	BigNumOpera  = "BigNumOpera"  // 大数操作(加、减、乘、除、合并)
	DigitalTrans = "DigitalTrans" // 人民币大小写转换
	RedBlackTree = "RedBlackTree"
)

// 数据结构专题
const (
	Sort            = "Sort"
	Heap            = "Heap"
	Stack           = "Stack"
	EffectBrackets  = "EffectBrackets"  // 判断有效括号
	MonotonousStack = "MonotonousStack" // 单调栈
	MinStack        = "MinStack"        // 最小栈
	Queue           = "Queue"
	List            = "List"
	StringCompare   = "StringCompare" // 字符串对比算法

	// 树、图、回溯专区
	Recursion = "Recursion"
	Tree      = "Tree"
	PreOrder  = "PreOrder"  // 先序遍历
	PostOrder = "PostOrder" // 后续遍历
	InOrder   = "InOrder"   // 中序遍历
	Graph     = "Graph"
)

// 算法专题
const (
	Dynamic = "Dynamic" // 动态规划
	LIS     = "LIS"     // 最长递增子序列  Longest Increasing SubSequence
	LCS     = "LCS"     // 最长公共子序列  Longest Common     Sequence
	LNS     = "LNS"     // 最长无重复子串  Longest NonRepeat  SubSequence
	LMS     = "LMS"     // 最大子段乘积   Largest  MultiOf    SubSequence
	LMG     = "LMG"     // 最大间隔乘积   Largest  MultiOf    Gap
	LSG     = "LSG"     // 最大间隔和     Largest  SumOf      Gap
	LSS     = "LSS"     // 最大子段和     Largest  SumOf      SubSequence

	Greedy = "Greedy" // 贪心算法

	BackTrack         = "BackTrack"       // 回溯(递归、剪枝)
	OptimalSchedule   = "OptimalSchedule" // 调度
	Permutation       = "Permutation"     // 排列
	Combination       = "Combination"     //组合
	PermuteAndCombine = "PermuteAndCombine"
)
